﻿#pragma once
#include "hzpch.h"
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
namespace Hazel
{
    class Camera
    {
    public:
        enum class ProjectionType
        {
            Perspective,
            Orthographic
        };

        // Camera(ProjectionType type = ProjectionType::Orthographic);

        void SetPerspective(float fov, float aspect, float nearClip, float farClip);
        void SetOrthographic(float left, float right, float bottom, float top, float nearClip, float farClip);

        const glm::mat4 &GetProjectionMatrix() const { return m_ProjectionMatrix; }
        const glm::mat4 &GetViewMatrix() const { return m_ViewMatrix; }

    private:
        void RecalculateViewMatrix();

        glm::mat4 m_ProjectionMatrix;
        glm::mat4 m_ViewMatrix;
        glm::vec3 m_Position = {0.0f, 0.0f, 0.0f};
        glm::vec3 m_Rotation = {0.0f, 0.0f, 0.0f};
    };
}